package com.train.springboot.springboottrain.service.impl;

import com.train.springboot.springboottrain.mapper.StudentMapper;
import com.train.springboot.springboottrain.model.Student;
import com.train.springboot.springboottrain.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentMapper studentMapper;
//    解决studentMapper报红，ssm方法是声明mybatis扫描器，springboot是在Mapper层 添加注解MAPPER
    @Override
    public Student queryById(Integer id) {
        return studentMapper.selectByPrimaryKey(id);
    }


/*笔记
spring注解@Service注解的使用

在pom.xml文件中指定资源文件夹（这个前题是Studentmapper.xml文件在src/main/java路径下）
        默认情况下，Mybatis 的 xml 映射文件不会编译到 target 的 class 目录下，所
        以我们需要在 pom.xml 文件中配置 resource               */
//<!--        手动指定资源文件夹-->
//<resources>
//<resource>
//<directory>src/main/java</directory>
//<includes>
//<include>**/*.xml</include>
//                </includes>
//            </resource>
//        </resources>

    @Override
    @Transactional //添加此注解说明该方法添加的事务管理，可以让事务回滚
    public int updateStudentById(Student student) {
        //修改成功
        int updateCount = studentMapper.updateByPrimaryKeySelective(student);
        System.out.println("更新结果：" + updateCount);
        //在此构造一个除数为 0 的异常，测试事务是否起作用
        //失败
        int a = 10/0;
        return updateCount;
    }

    @Override
    public Integer queryStudentCount() {
        return studentMapper.selectStudentCount();
    }


}